package com.kun.admin.authority.service;

import com.github.pagehelper.Page;
import com.kun.admin.authority.model.RoleModel;
import com.kun.admin.authority.model.UserVo;
import com.kun.base.model.UserAndInfoModel;
import org.springframework.web.multipart.MultipartFile;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Administrator on 2016/9/20 0020.
 */
public interface AuthorityUserService {
    /**
     * 获取所有用户列表
     * @return
     */
    Page<UserAndInfoModel> list();

    /**
     * 根据用户id获取用户
     * @param userId 用户id
     * @return
     */
    UserAndInfoModel getUserById(Long userId);

    /**
     * 更新用户的基本数据
     * @param userAndInfoModel
     * @return
     */
    int updateBaseUserInfo(UserAndInfoModel userAndInfoModel);

    /**
     * 将文件上传到服务器
     * @param userId
     * @param file
     * @return
     */
    boolean uploadHeadImage(Long userId, MultipartFile file);

    /**
     * 修改用户密码
     * @param userId  用户id
     * @param oldPassword  旧密码
     * @param newPassword  新密码
     * @return  修改结果信息
     */
    String updatePwd(Long userId, String oldPassword, String newPassword);

    /**
     * 添加用户,只插入用户名和密码
     * @param addUserName
     * @param addUserPassword1
     * @return
     */
    String addUser(String addUserName, String addUserPassword1);

    /**
     * 查询用户的所有角色
     * @param userId
     * @return
     */
    ArrayList<RoleModel> findUserRole(Long userId);

    /**
     * 为用户添加角色
     * @param userId
     * @param roleId
     * @return
     */
    boolean addRole(Long userId, Long roleId);

    /**
     * 移除用户角色
     * @param userId
     * @param roleId
     * @return
     */
    boolean deleteRole(Long userId, Long roleId);

    /**
     * 根据条件查询用户
     * @param userVo
     * @return
     */
    Page<UserAndInfoModel> findUserList(UserVo userVo);

    /**
     * 查询用户ID
     * @param userId
     * @return
     */
    List<Long> findUserDept(Long userId);

    /**
     * 修改用户的部门
     * @param userId
     * @param deptIds
     * @return
     */
    boolean updateUserDept(Long userId, long[] deptIds);

    /**
     * 添加用户及其信息
     * @param userInfo
     * @return
     */
    String addUserInfo(UserAndInfoModel userInfo);

    /**
     * 删除用户
     * @param userId
     * @return
     */
    boolean deleteUser(Long userId);

    /**
     * 查找头像路径
     * @param userId
     * @return
     */
    String findHeadImagePath(Long userId);
}
